/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package accountmanager.controller;

import accountmanager.dao.Cliente;
import accountmanager.dao.Conta;
import accountmanager.dao.ifc.ContaDAO;
import accountmanager.factory.Factory;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author afonso
 */
public class GerenciaContas {
    private Factory factory;

    private ContaDAO contaDAO;

    private ArrayList<Conta> contas = new ArrayList<Conta>();

    public GerenciaContas() {
        factory = new Factory();
        contaDAO = factory.createContaDAO();
    }

    public Conta buscaContaNumero(int numero) {
        return contaDAO.buscaContaNumero(numero);
    }

    public ArrayList<Conta> buscaTodasContas() {
        return contaDAO.buscaTodasContas();
    }

    public String buscaTodasContasCliente(long cpf) {
        ArrayList<Conta> contasEncontradas = contaDAO.buscaTodasContasCliente(cpf);

        StringBuilder sb = new StringBuilder();
        if (!contasEncontradas.isEmpty()) {
            Iterator<Conta> it = contasEncontradas.iterator();
            while (it.hasNext()) {
                Conta contaIt = it.next();
                sb.append("Nome do Cliente : ").append(contaIt.getCliente().getNome())
                        .append("\n" + "Número : ").append(contaIt.getNumero())
                        .append("\n" + "Data de Abertura : ").append(contaIt.getDataAbertura().toString())
                        .append("\n" + "Saldo : ").append(contaIt.getSaldo()).append("");
            }
        } else {
            sb.append("Não há contas para esse cliente");
        }

        return sb.toString();

    }

    public String cadastraConta(int numero, double saldo, Cliente cliente) {
        if (contaDAO.cadastraConta(numero, saldo, cliente))
            return "Conta cadastrada com sucesso";
        else
            return "Conta corrente já existe nem nossas bases de dados";

    }

    public String depositar(int numero, double quantia) {
        if (contaDAO.depositar(numero, quantia)) {
            return "Depósito efetuado com sucesso, na conta de número: " + numero;
        } else {
            return "Não vou encontrado nenhuma conta com este número, refaça a operação";

        }
    }

    public String debitar(int numero, double quantia) {
        if (contaDAO.debitar(numero, quantia)) {
            return "Débito realizado com sucesso no valor de: " + quantia;
        } else {
            return "Não vou encontrado nenhuma conta com este número, refaça a operação";

        }
    }
}
